// configure.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include <direct.h>
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
#include <string.h>
#include <windows.h>
#include <atlbase.h>

void GetIniValue(const char* name, char ** value, long length, const char* defvalue)
{
	char szTemp[256];
	memset(szTemp, 0, sizeof szTemp);

	GetPrivateProfileString(
	  "Environment",
	  name,
	  defvalue,
	  szTemp,
	  sizeof szTemp -1,
	  "configure.ini"
	);

	WritePrivateProfileString(
	  "Environment",
	  name,
	  szTemp,
	  "configure.ini"
	);

	strncpy(*value, szTemp, length);
}

int _tmain(int argc, _TCHAR* argv[])
{
	char *szCwd = new char[256], szPath[256], szEBASSrc[256];
	HKEY hKey;

	RegOpenKey(HKEY_LOCAL_MACHINE,
			   "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment",
			   &hKey);

	memset(szEBASSrc, 0, sizeof(szEBASSrc));

	memset(szPath, 0, sizeof(szPath));
	memset(szCwd, 0, 256);
	_getcwd(szPath, (sizeof szPath)-1);		

	GetIniValue("EBAS_SRC", &szCwd, 255, szPath);

	RegSetValueEx(
	  hKey,
	  "EBAS_SRC",
	  0,
	  REG_EXPAND_SZ,
	  (LPBYTE) szCwd,
	  (DWORD) 255 //(lstrlen(szPath)+1)*sizeof(TCHAR) 
	);

	sprintf(szEBASSrc, "@echo EBAS Source dir: %s", szCwd);
	system(szEBASSrc);

	memset(szPath, 0, sizeof(szPath));
	memset(szCwd, 0, 256);

	GetIniValue("EBAS_3PARTY", &szCwd, 255, "\\..\\3party");

	_getcwd(szPath, (sizeof szPath)-1);	
	strncat(szPath, szCwd, sizeof(szPath)-1);
	RegSetValueEx(
	  hKey,
	  "EBAS_3PARTY",
	  0,
	  REG_EXPAND_SZ,
	  (LPBYTE) szPath,
	  (DWORD) (lstrlen(szPath)+1)*sizeof(TCHAR) 
	);

	memset(szPath, 0, sizeof(szPath));
	memset(szCwd, 0, 256);

	GetIniValue("EBAS_3PARTY_BIN", &szCwd, 255, "\\..\\3party\\bin");

	_getcwd(szPath, (sizeof szPath)-1);	
	strncat(szPath, szCwd, sizeof(szPath)-1);
	RegSetValueEx(
	  hKey,
	  "EBAS_3PARTY_BIN",
	  0,
	  REG_EXPAND_SZ,
	  (LPBYTE) szPath,
	  (DWORD) (lstrlen(szPath)+1)*sizeof(TCHAR) 
	);

	memset(szPath, 0, sizeof(szPath));
	memset(szCwd, 0, 256);

	GetIniValue("EBAS_3PARTY_LIB", &szCwd, 255, "\\..\\3party\\lib");

	_getcwd(szPath, (sizeof szPath)-1);	
	strncat(szPath, szCwd, sizeof(szPath)-1);
	RegSetValueEx(
	  hKey,
	  "EBAS_3PARTY_LIB",
	  0,
	  REG_EXPAND_SZ,
	  (LPBYTE) szPath,
	  (DWORD) (lstrlen(szPath)+1)*sizeof(TCHAR) 
	);

	RegCloseKey(hKey);

    SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)"Environment");

	return 0;
}

